1. Technical Field
The present invention is related to serial communication techniques for use between computer systems.
2. Background Art
Communication of data between computer systems over serial data links is quite common. Numerous protocols and standard data exchange formats have been developed. Data may be communicated synchronously or asynchronously, with synchronous communication protocols generally having higher data transmission rates.
Synchronous communication systems send data in discrete blocks, also referred to as frames or packets. Data frames typically include, in addition to the data itself, indicators for the beginning and end of the block, a cyclic redundancy check (CRC), and other control information. Since the communication is synchronous, the sender and receiver are required to use clocks having the same time base. This is generally accomplished by having the receiver regenerate the clock from the received data.
Such frame-based synchronous communication systems can encounter problems with pacing of the data. Received data is usually placed into buffers, from which it is extracted by the receiver. If, for some reason, the receiver is unable to remove data from the buffers as fast as data is being transmitted over the communications link, data overrun will eventually occur. In this situation, data is either lost or some recovery protocol must determine what data is missing and require that it be retransmitted. This situation is most likely to occur if the receiving system contains multiple input/output subsystems, or is otherwise heavily loaded with tasks other than the data exchange under consideration. Although the receiving system can easily keep up with a single I/O subsystem, the presence of multiple subsystems can cause the overall receiving system to fall behind some particular I/O channel.
Presently, systems are typically designed so that the receiving system will always have sufficient capacity to handle all of its I/O subsystems without the possibility of data overrun. Since all I/O channels are seldom operating simultaneously at full capacity, the receiving system has excess capacity most of the time. This overdesign requirement causes systems to be more expensive than they otherwise need to be. In addition, such systems have a limited capability for expansion, since the total I/O bandwidth of all channels must be less than that which can be handled by the system.
It would therefore be desirable to provide a communications system and method which prevents the possibility of data overruns regardless of the response time of the receiving system. It would be further desirable if such system would allow data to be transmitted over the link at maximum capacity when the receiving system is able to handle such data rates.